package main

import (
	"GormData/models/relation_table"
	_ "github.com/go-sql-driver/mysql" // 导入 MySQL 驱动
	"github.com/jinzhu/gorm"
)

func main() {
	// 用户名：密码@tcp(ip:port)/数据库?charset=utf8&parseTime=True&loc=Local
	db, err := gorm.Open("mysql", "root:123456@tcp(localhost:3306)/gorm_project?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}

	defer db.Close() // 关闭空闲的连接

	// 自动迁移
	//db.AutoMigrate(&models.User{}, &models.UserInfo{}, &models.GormModelTest{}, &models.Article{})
	// 关联关系
	db.AutoMigrate(&relation_table.User{}, &relation_table.UserProfile{}) // o2o
	db.AutoMigrate(&relation_table.User2{}, &relation_table.Article{})    //  02m
	db.AutoMigrate(&relation_table.Article2{}, &relation_table.Tag{})     // m2m
	// 统一加前缀或者后缀
	//gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
	//	// 只能加在前面   或者  后面
	//	return "sys_" + defaultTableName
	//}

	// 增加
	//db.Create(&models.User{Name: "Jackson", Age: 235, Addr: "北京", Pic: "/static/upload/pic111.jpg", Phone: 1586421032})
	//// 查询
	//fmt.Println("=============查询=================")
	//var user models.User
	//db.First(&user, 1) // 默认id为1
	//fmt.Println(user)
	//db.First(&user, "name=?", "Jackson")
	//fmt.Println(user)

	// 修改，  先查再改
	//fmt.Println("=============修改=================")
	//// var user User
	//db.First(&user, 1)                 // default id = 1
	//db.Model(&user).Update("age", 999) // 这里的Model 是查询出来的结构体对象  user，  不是模型
	//db.First(&user, 1)
	//fmt.Println(user)

	// 删除，   先查在删
	//fmt.Println("=============删除=================")
	//db.First(&user, 1)
	//db.Delete(&user)
}
